package com.web_bloks.document.client;

import com.web_bloks.document.client.Title;
import com.web_bloks.document.client.TitleException;
import com.web_bloks.document.client.NamespaceException;
import com.web_bloks.types.client.SimpleMap;
/**
 * DocumentObject
 * 
 * @author Jean-Lou Dupont
 *
 */
public class DocumentObject implements Document {

	//STATES
	public final static int STATE_VALID		= 0;
	public final static int STATE_INVALID	= 1;
	
	//
	int state = STATE_INVALID;
	
	//PageData
	Title title = null;
	//String name;
	String content;
	//MetaData
	SimpleMap meta = new SimpleMap();
	
	//Title
	
	
	/*===================================================================
	 * CONSTRUCTORS
	 ===================================================================*/
	protected DocumentObject(Title title) {
		super();
		this.title = title;
	}
	/*===================================================================
	 * CREATORS
	 ===================================================================*/
	/**
	 * Creates an instance from a 'raw' text title
	 */
	public static DocumentObject createFromTextTitle(String text) throws TitleException, NamespaceException {
		Title title = Title.newFromText(text);
		return new DocumentObject(title);
	}//
	public static DocumentObject createFromTitle(Title title){
		return new DocumentObject(title);
	}
	/*===================================================================
	 * State
	 ===================================================================*/
	public int getState() {
		return state;
	}
	public void setState(int state) {
		this.state = state;
	}
	/*===================================================================
	 * PageData
	 ===================================================================*/
	/**
	 * Returns the page's title text
	 * 
	 * @return title-text String
	 */
	public String getPageTitleText() {
		return title.toString();
	}
	
	/**
	 * Returns the 'title' object
	 * @return title Title 
	 */
	public Title getPageTitle() {
		return title;
	}
	
	public String getPageContent() {
		return content;
	}
	public void setPageContent(String content) {
		this.content = new String(content);
	}
	/*===================================================================
	 * MetaData
	 ===================================================================*/
	
	public String getMeta(String key) {
		return meta.getKey(key);
	}
	public void		setMeta(String key, String value) {
		meta.setKey(key, value);
	}
	public boolean	containsMeta(String key) {
		return meta.containsKey(key);
	}
	public void	setMetaFromSimpleMap(SimpleMap map) {
		this.meta = map;
	}
	public String	serializeMeta() {
		return this.meta.serialize();
	}
	
}//END